package com.credithc.customers.api.service;

import com.credithc.customers.base.ro.*;

import java.util.Map;

/**
 * @Title: 统一登录
 * @Author: Denghx
 * @Date: 2020/1/13 17:54
 * @Description: com.credithc.customers.api.service
 * @Version: V1.0.0
 */
public interface ICustomerUnifyService {

    /**
     * @description: 忘记/修改密码接口
     * @author: denghx
     * @date: 2020/1/14 17:52
     * @param: request
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    void forgetPwd(BaseRequest<UnifyPwdRo> request);

    /**
     * @description: 统一注册接口
     * @author: fby
     * @date: 2020/1/14 14:22
     * @param: request
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> unifyRegister(BaseRequest<CustomerUnifyRegisterRo> bRequest);

    /**
     * @description: 统一登陆接口
     * @author: fby
     * @date: 2020/1/15 14:47
     * @param: request
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> unifyLogin(BaseRequest<CustomerUnifyLoginRo> bRequest);

    /**
     * @description: 注册/登陆接口
     * @author: denghx
     * @date: 2020/1/15 14:15
     * @param: bRequest
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> unifyRegisterLogin(BaseRequest<UnifyRegisterLoginRo> bRequest);

    /**
     * @description: 发送短信验证码
     * @author: denghx
     * @date: 2020/1/16 11:48
     * @param: bRequest
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> sendSmsCode(BaseRequest<UnifySmsCodeRo> bRequest);

    /**
     * @description: 用户注销
     * @author: denghx
     * @date: 2020/1/17 9:24
     * @param: request
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> cancel(BaseRequest<UnifyCancelRo> request);

    /**
     * @description: 修改手机号
     * @author: denghx
     * @date: 2020/1/17 11:47
     * @param: bRequest
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> modifyPhone(BaseRequest<UnifyModifyPhoneRo> bRequest);

    /**
     * @description: 用户身份信息变更
     * @author: fby
     * @date: 2020/1/20 10:47
     * @param: bRequest
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> changeInfo(BaseRequest<CustomerUnifyUpdateRo> bRequest);

    /**
     * @description: 用户身份信息解绑
     * @author: fby
     * @date: 2020/1/20 15:29
     * @param: bRequest
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> untie(BaseRequest<CustomerUnifyUntieRo> bRequest);

    Map<String, Object> login(BaseRequest<CustomerUnifyLoginRo> bRequest);

    /**
     * @description: code获取token及用户信息
     * @author: denghx
     * @date: 2020/2/27 15:23
     * @param: bRequest
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> getToken(BaseRequest<UnifyTokenRo> bRequest);

    /**
     * @description: 授权页面请求一账通
     * @author: denghx
     * @date: 2020/2/27 19:26
     * @param: ro
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> grantAuth(UnifyGrantAuthRo ro);

    /**
     * @description: 用户点击授信后，去一账通授信
     * @author: denghx
     * @date: 2020/2/27 19:26
     * @param: ro
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> subGrantAuth(UnifySubGrantAuthRo ro);

    Map<String, Object> getInfoByToken(BaseRequest<UnifyTokenInfoRo> bRequest);

    Map<String, Object> getRandomCodeBase64();

    Map<String, Object> graphicVerify(UnifygraphicRo ro);

    Map<String, Object> refreshGraphic(UnifyRefreshGraphicRo ro);

    /**
     * @description: 支付中台查询客户信息
     * @author: denghx
     * @date: 2020/4/2 11:30
     * @param: request
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> queryCustInfo(BaseRequest<CustomerUnifyQueryInfoRo> request);


    Map<String, String> getBusinessUser(BaseRequest<CustomerInfoRo> bRequest);

    Map<String, Object> getFormalCode(UnifyFormalCodeRo ro);

    Map<String, Object> verifyRegister(BaseRequest<CustomerUnifyVerifyRo> bRequest);

    Map<String, Object> createPre(BaseRequest<CustomerUnifyRegisterRo> request);

    /**
     * @description: 判断code是否失效
     * @author: denghx
     * @date: 2020/5/26 0:35
     * @param: bRequest
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String, Object> verifyCode(BaseRequest<UnifyCodeRo> bRequest);

    Map<String, Object> modifyBusinessInfo(BaseRequest<UnifyModifyBusinessRo> bRequest);

    Map<String, Object> queryBusinessModify(BaseRequest<CustomerUnifyQueryInfoRo> bRequest);

    Map<String, Object> getInvitationInfo(BaseRequest<CustomerInvitationRo> bRequest);

    void fixCustNo(BaseRequest<CustomerUnifyFixRo> bRequest);

    Map<String, Object> sendSms(BaseRequest<UnifySmsPwdRo> bRequest);

    void verifySms(BaseRequest<VerifySmsCodeRo> bRequest);

    Map<String, Object> checkAuth(BaseRequest<UnifyAuthRo> bRequest);

    Map<String, Object> auth(BaseRequest<UnifyAuthRo> bRequest);

}
